package org.dtrd.config.pay;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;
import java.util.Objects;

/**
 * @author xiao
 * @date 2022/6/6 11:18 AM
 */
public final class PayConstant {

    /**
     * 支付状态
     */
    @Getter
    @AllArgsConstructor
    public enum PayStatus {
        /**
         * 待支付
         */
        TO_BE_PAYED(0),
        /**
         * 已支付
         */
        PAYED(1);

        private int state;
    }

//    /**
//     * 订单状态
//     */
//    @Getter
//    @AllArgsConstructor
//    public enum OrderStatus {
//        /**
//         * 待支付
//         */
//        TO_BE_PAYED(1),
//        /**
//         * 已取消
//         */
//        CANCELED(2),
//        /**
//         * 已支付
//         */
//        PAYED(3),
//        /**
//         * 已完成
//         */
//        COMPLETE(4);
//
//        private int state;
//    }



    /**
     * 订单状态，1 待支付 2 已取消 3 已支付 4 已完成 5已领取 6退款中 7已退款 8已发货
     */
    @Getter
    @AllArgsConstructor
    public enum OrderStatus {
        /**
         * 1. 待支付
         */
        TO_BE_PAYED(1, "待支付"),
        /**
         * 2. 已取消
         */
        CANCELED(2, "已取消"),
        /**
         * 3. 已支付
         */
        PAYED(3, "已支付"),
        /**
         * 4. 已完成
         */
        COMPLETE(4, "已完成"),
        /**
         * 5. 5已领取
         */
        IS_GET(5, "已领取"),
        /**
         * 6. 6退款中
         */
        WAIT_REFUND(6, "退款中"),
        /**
         * 7. 7已退款
         */
        IS_REFUND(7, "已退款"),
        /**
         * 8. 已发货
         */
        IS_DELIVERY(8, "已发货"),
        /**
         * 9. 拒绝退款
         */
        REJECT_REFUND(9, "拒绝退款");

        int type;
        String name;

        public static OrderStatus valueOf(Integer type) {
            return Arrays.stream(values()).filter(c -> Objects.equals(c.getType(), type)).findAny().orElse(null);
        }

        public Integer getState() {
            return type;
        }
    }

    /**
     * 支付方式
     */
    @Getter
    @AllArgsConstructor
    public enum PayType {
        /**
         * 支付宝
         */
        ALIPAY(1),
        /**
         * 微信
         */
        WECHATPAY(2),
        /**
         * 现金支付
         */
        CASH(3);

        private int type;
    }

    /**
     * 订单类型
     */
    @Getter
    @AllArgsConstructor
    public enum OrderType {
        /**
         * 商城订单
         */
        SHOP(0),
        /**
         * 微信
         */
        WECHATPAY(2),
        /**
         * 控糖服务包订单
         */
        SERVICE(4);

        private int type;
    }

}
